??, if let 和 guard 语法¶
??操作符号 相当于简单的三目运算 ??的使用 (a ?? b) 如果a有值那就用a的值 如果没有值就用'??'后面的来代替
1 2 3 | var a : Int? ; let b: Int? = 20 print((a ?? 40) + (b ?? 0)) //结果:60 |
if let / if var if let 和 if var 连用语法 目的:据说用来判断值是否为nil[空],不是单纯的if【if let / if var 在赋值的同时做判断而if只做判断】
if let 对{}中的值不能做修改
1 2 3 4 5 6 | var count: Int? = 100 if let validCount = count {//如果count有值的话,把count的值赋给validCount,且条件为true;如果count为nil,则执行else print( "count is " + String(validCount) ) //count的值为100 } else { print( "nil") } |
if var对{}中的值可做修改
1 2 3 4 5 6 7 | var count: Int? = 100 if var validCount = count {//如果count有值的话,把count的值赋给validCount,且条件为true;如果count为nil,则执行else validCount += 10 print( "count is " + String(validCount) ) //count的值为100 } else { print( "nil") } |
guard let / guard var guard let 和 if let刚好相反 guard 守护一定有值,如果没有值 就直接返回
guard let
1 2 3 4 5 6 7 8 9 10 11 12 | func getPeople () { var name: String? var age: Int? name = "lilei" age = 20 guard let name1 = name,let age1 = age else { print("此人不存在") return } print(name1 + " " + String(age1)) } getPeople() // 输出结果为 : lilei 20 |
guard var
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | func getPeople () { var name: String? var age: Int? name = "lilei" age = 20 guard var name1 = name,var age1 = age else { print("此人不存在") return } name1 = "hebe" //值可以修改 age1 = 25 print(name1 + " " + String(age1)) } getPeople() // 输出结果为 : hebe 25 |
if case Swift中的if case主要用于模式匹配。跟switch很类似,但它本身有特别的使用场景,区别switch在于,switch用于对所有的对象可能值进行判断,而if case之需要对关注的可能值进行判断。
1 2 3 4 5 6 7 8 9 | enum CarBrand{ case BMW case AUDI case BENZ } let myBrand = CarBrand.BMW if case .BMW = myBrand{ print("宝马") } |